/*
https://github.com/wendux/fly

原生小程序的request请求都是异步请求，在实际项目中使用起来很麻烦，自己封装的方法又不够用，所以想到了flyio,不仅可以实现Promise，而且还可以对所有的页面请求进行拦截，使用起来非常的方便:
https://blog.csdn.net/qq_16646819/article/details/81909408

具体使用文档：
https://wendux.github.io/dist/#/doc/flyio/readme



在其他页面引用:
import http from "../../utils/http.js"

使用：
  http.fly.post(baseUrl + 'tt/news', {
            type: 1,
            page: 1
        }).then(res => {
            console.log(res)
        })



*/

import qs from "../libs/qs.js"
import Fly from "../libs/wx.js" //引入路径根据自己放置的目录配置

const fly = new Fly;
fly.interceptors.request.use((request) => {
  request.timeout = 30000;
  console.log(request.url)
  wx.showLoading({
    title: "加载中",
    mask: true,
  });
  if (wx.getStorageSync('access_token')) { //检查本地缓存是否有token存在没有则重新获取
    request.headers = { //设置请求头
      //"content-type": "application/json",
      "Authorization": "Bearer " + wx.getStorageSync('access_token')
    }
  }

  return request;
})

fly.interceptors.response.use(
  (response) => {
    console.log("response =>", response);
    wx.hideLoading();
    //str.indexOf("3") != -1
    if (response.request.url.indexOf("auth/oauth/token") != -1) {
      return response.data
    } else {
      if (!response.data.success) {
        wx.showToast({
          title: response.data.msg,
          icon: 'succes',
          duration: 1000,
          mask: true
        })
      }
      return response.data.data; //请求成功之后将返回值返回
    }


  },
  (err) => {
    console.log(err);
    wx.showToast({
      title: err.response.data.msg,
      icon: 'succes',
      duration: 1000,
      mask: true
    })
    //请求出错，根据返回状态码判断出错原因
    console.log("err = ", err)
    wx.hideLoading();
    if (err.status == 0) {
      return "网络连接异常"
    } else if (err.status == 1) {
      return "网络连接超时"
    } else if (err.status == 401) {
      return "用户未登录"
    } else {
      if (err.response.data.msg) {
        return err.response.data.msg
      } else {
        return '请求数据失败,请稍后再试'
      }
    };
    // Do something with response error
  }
)
export default {
  fly: fly
}